<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>CruiseControl.NET : Modification Reader Task</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">	    
    </head>

    <body>
	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
		    <tr>
			    <td valign="top" class="pagebody">
				    <div class="pageheader">
					    <span class="pagetitle">
                            CruiseControl.NET : Modification Reader Task
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Jul 20, 2009 by <font color="#0050B2">williams</font>.
				    </div>

				    <p>This tasks makes it possible to read back modifications made by the <a href="Modification Writer Task.html" title="Modification Writer Task">Modification Writer Task</a>.<br/>
Available from 1.4 onwards.</p>

<h5><a name="ModificationReaderTask-Example%3A"></a>Example :</h5>

<p>2 projects in CCNet<br/>
1) is a project that does the compile, test, ... stuff, and also writes the modifications using the ModificationWriterTask<br/>
&nbsp;&nbsp;&nbsp;&nbsp; be sure to set the appendTimeStamp of the modificationWriter to true<br/>
2) is a project that deploys the result of project 1<br/>
&nbsp;&nbsp;&nbsp;--&gt; copies it to other servers, updates source control (binary references like a framework), ...<br/>
&nbsp;&nbsp;&nbsp;The reason for a second project is that this can be done on releases of milestones of project 1<br/>
&nbsp;&nbsp;&nbsp;The ModificationReaderTask can now easily read the modification file(s) made by project one, into it's own integration,<br/>
&nbsp;&nbsp; making it possible that these can be used by the existing tasks/publishers of ccnet for project 2</p>

<p>It is best to place the modificationreader in the prebuild section, so all the other tasks / publisers know the read modifications also.
<br clear="all" /></p>

<h4><a name="ModificationReaderTask-Minimalconfigurationexample%3A"></a>Minimal configuration example:</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">&lt;modificationReader /&gt;</pre>
</div></div>

<h4><a name="ModificationReaderTask-Fullconfigurationexample%3A"></a>Full configuration example:</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">&lt;modificationReader&gt;
     &lt;filename&gt;mods.xml&lt;/filename&gt;
     &lt;path&gt;&lt;/path&gt;
&lt;/modificationReader&gt;</pre>
</div></div>

<h4><a name="ModificationReaderTask-ConfigurationElements%3A"></a>Configuration Elements:</h4>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Node </th>
<th class='confluenceTh'> Description </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Required </th>
<th class='confluenceTh'> Default </th>
<th class='confluenceTh'> Version </th>
</tr>
<tr>
<td class='confluenceTd'> filename </td>
<td class='confluenceTd'> The filename pattern for the file containing the modifications. <br clear="all" />
CCnet with search in the path for files starting with this filename, and having the same extention. <br clear="all" />
for example when filename is set to modifications.xml, ccnet will search for files like so : <br clear="all" />
modifications*.xml </td>
<td class='confluenceTd'> string </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> modifications.xml </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> path </td>
<td class='confluenceTd'> The directory to search the xml file(s) in. </td>
<td class='confluenceTd'> string </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> the artifact directory </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> deleteAfterRead </td>
<td class='confluenceTd'> Delete the files after they have been read. <br clear="all" /> </td>
<td class='confluenceTd'> bool </td>
<td class='confluenceTd'> false <br clear="all" /> </td>
<td class='confluenceTd'> false </td>
<td class='confluenceTd'> 1.4.4 </td>
</tr>
<tr>
<td class='confluenceTd'> description </td>
<td class='confluenceTd'> If filled in, this will be shown in the buildstage as the process name <br clear="all" /> </td>
<td class='confluenceTd'> string <br clear="all" /> </td>
<td class='confluenceTd'> false <br clear="all" /> </td>
<td class='confluenceTd'> n/a </td>
<td class='confluenceTd'>&nbsp;</td>
</tr>
<tr>
<td class='confluenceTd'> dynamicValues </td>
<td class='confluenceTd'> Any dynamic parameters to be used. See <a href="Dynamic Parameters.html" title="Dynamic Parameters">Dynamic Parameters</a> </td>
<td class='confluenceTd'> Dynamic values array - see <a href="Dynamic Parameters.html" title="Dynamic Parameters">Dynamic Parameters</a> </td>
<td class='confluenceTd'> No </td>
<td class='confluenceTd'> <em>None</em> </td>
<td class='confluenceTd'> 1.5.0 </td>
</tr>
</tbody></table>
<p>It is adivisable to keep these configuration elements of the modificationWriter and the modificationReader the same.&nbsp;
<br clear="all" /></p>

				    
                    			    </td>
		    </tr>
	    </table>
	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td height="12" background="http://confluence.public.thoughtworks.org//images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td>
			</tr>
		    <tr>
			    <td align="center"><font color="grey">Document generated by Confluence on Sep 29, 2009 20:59</font></td>
		    </tr>
	    </table>
    </body>
</html>